#ifndef ALGORITHMES_H_
#define ALGORITHMES_H_

#include <vector>
#include <iostream>
#include"AbstractGraph.h"
#include "Graph.h"
#include "Tree.h"
#include "BipartiteGraph.h"

class Algorithms : public AbstractGraph
{

 public:
  Algorithms();
  std::vector<int> glouton(const AbstractGraph graph);
  std::vector<int> twoApprocheVoisinage(const AbstractGraph graph);
  void parcoursProfondeur(const AbstractGraph *g, Tree *t, int vertexRoot);
  std::vector<int> twoApprocheGraphe(AbstractGraph *g, Tree *t, int vertexRoot);
  std::vector<int> optTree(const Tree t);
  std::vector<int> * routesAndCircuits(AbstractGraph & g, int k);
  std::vector<int> * parametricAlgorithm(AbstractGraph & g, int k);
  std::vector<int> optimalBipartite(BipartiteGraph &bg);
 private:

};

#endif
